package com.hn658.base.message.appinfo.service;

import java.util.List;
import java.util.Map;

import com.hn658.base.message.appinfo.entity.AppInfoEO;
import com.hn658.base.message.appinfo.exception.AppInfoException;
import com.hn658.framework.dataaccess.pagination.GenericPage;

/**
 * 应用业务逻辑接口
 * @author ztjie
 *
 */


public interface IAppInfoService {
	
	/**
	 * 根据uid集合返回应用信息
	 * @return
	 */
	public List<AppInfoEO> findAppInfosByIds(List<Long> ids);
	
	/**
	 * 查询应用信息
	 * @param queryMap
	 * @param limit
	 * @param start
	 * @param sortBy
	 * @param isAsc
	 * @return
	 */
	public GenericPage<AppInfoEO> queryAppInfo(Map<String, Object> queryMap, int limit, int start,
			String sortBy, boolean isAsc);
	
	/**
	 * 修改应用信息
	 * @param appInfoEO
	 * @return
	 */
	public AppInfoEO modifyAppInfo(AppInfoEO appInfoEO,byte[] apnsUpload) throws AppInfoException;
	
	/**
	 * 添加应用
	 * @throws AppInfoException 
	 */
	public AppInfoEO addApp(AppInfoEO appInfo,byte[] apnsPaths) throws AppInfoException;
	
	/**
	 * 通过id查找应用
	 * @param id
	 * @return
	 */
	public AppInfoEO findAppById(Long id) throws AppInfoException;
	
	/**
	 * 通过应用注册ID查找应用
	 * @param appId
	 * @return
	 */
	public AppInfoEO findAppByAppId(String appId) throws AppInfoException;
	
	/**
	 * 根据id删除应用
	 * @author ztjie
	 * @date 2014-8-12 下午2:20:24
	 * @param id
	 */
	public boolean deleteAppById(Long id) throws AppInfoException;
    
	/**
	 * 禁用应用
	 * @author ztjie
	 * @date 2014-8-13 下午3:00:51
	 * @param id
	 */
	public void disableAppInfo(Long id) throws AppInfoException;
	
	/**
	 * 启用应用
	 * @author ztjie
	 * @date 2014-8-13 下午3:01:53
	 * @param id
	 */
	public void enableAppInfo(Long id) throws AppInfoException;
	
	/**
	 * 获取APP应用百度推送的配置信息
	 * @return
	 * @throws AppInfoException
	 */
	public AppInfoEO findAppBaiduConfig(String appId) throws AppInfoException;
	
	/**
	 * 获取APP应用苹果推送的配置信息
	 * @return
	 * @throws AppInfoException
	 */
	public AppInfoEO findAppApnsConfig(String appId) throws AppInfoException;
}
